package com.heima.controller;

import com.baomidou.mybatisplus.extension.api.R;
import com.heima.common.Result;
import com.heima.pojo.dto.SkuDto;
import com.heima.pojo.dto.SkuQueryDto;
import com.heima.pojo.dto.SkuSearchDto;

import com.heima.pojo.vo.SkuSearchVo;
import com.heima.service.SkuSearchService;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * 商品管理
 */
@RestController
@RequestMapping("/api/vm-service/sku")
@Slf4j
public class SkuSearchController {
    @Autowired
    private SkuSearchService skuSearchService;




    /**
     * 商品搜索
     * @param dto
     * @return
     */
    @GetMapping("/search")
    @ApiOperation("商品搜索")
    public SkuSearchDto<SkuSearchVo> search(SkuQueryDto dto){

        log.info("商品搜索{}",dto);
        return skuSearchService.getSearch(dto);
    }

    /**
     * 新增商品
     * @param skuDto
     * @return
     */
    @PostMapping
    @ApiOperation("新增商品")
    public Result<String> addAll(@RequestBody SkuDto skuDto){
        log.info("新增商品,{}",skuDto);
        skuSearchService.add(skuDto);
        return Result.success();
    }


    /**
     * 修改商品
     * @param skuId
     * @param skuDto
     * @return
     */
    @PutMapping("/{skuId}")
    @ApiOperation("修改商品")
    public Result<Boolean> update(@PathVariable Long skuId, @RequestBody SkuDto skuDto) {
        log.info("修改商品, skuId={}, 数据={}", skuId, skuDto);

        try {
            // 验证价格字段
            if (skuDto.getPrice() != null && (skuDto.getPrice() < 0 || skuDto.getPrice() > 99999999)) {// 价格验证
                return Result.error("价格必须在0-99999999之间");
            }

            // 设置skuId到skuDto中
            skuDto.setSkuId(String.valueOf(skuId));// 将skuId转换为字符串
            skuSearchService.updates(skuDto);// 调用更新方法
            log.info("商品修改成功, skuId={}", skuId);
            return Result.success(true);
        } catch (Exception e) {
            log.error("商品修改失败, skuId={}, 错误信息: {}", skuId, e.getMessage(), e);
            return Result.error("修改失败: " + e.getMessage());
        }
    }












}
